// 导入 url 模块
import url from "url";
// 导入文件模块
import fs from "fs";

// 扫描控制器文件
export function scanController() {
  // 获取文件夹的绝对路径
  const dirPath = url.fileURLToPath(
    new URL("../controllers", import.meta.url).href
  );

  // 扫描文件夹的所有文件
  const controllersPath = fs.readdirSync(dirPath);

  // 过滤 控制器文件
  const controllers = controllersPath
    .filter((controller) => controller.endsWith("Controller.js"))
    .map((controller) => `file:///${dirPath}/${controller}`);

  // 返回 控制器文件路径列表
  return controllers;
}

// 批量注册路由
export function registerRouter(router, controllers) {
  // 遍历注册路由
  controllers.forEach(async (controller) => {
    // 导入控制器文件（路由注册配置列表）
    const arr = await import(controller);

    // 注册路由
    arr.default.forEach((element) => {
      // get 请求方法
      if (element.method === "get") {
        router.get(element.url, element.fn);
      }
      // post 请求方法
      else if (element.method === "post") {
        router.post(element.url, element.fn);
      }
      // put 请求方法
      else if (element.method === "put") {
        router.put(element.url, element.fn);
      }
      // delete 请求方法
      else if (element.method === "delete") {
        router.delete(element.url, element.fn);
      } else {
        // 请求方法不正确
        console.log(`请求方法不正确：${element.method}`);
      }
    });
  });
}
